from transformers import BertTokenizer
model_name="./model/google-bert/bert-base-chinese/models--google-bert--bert-base-chinese/snapshots/c30a6ed22ab4564dc1e3b2ecbf6e766b0611a33f"
# 加载字典和分词工具
# token=BertTokenizer.from_pretrained("bert-base-chinese") # 在线方式
token=BertTokenizer.from_pretrained(model_name) # 使用本地方式（推荐）
'''
sents=["酒店太旧，大堂感觉像三星级水平，在郑州这样的酒店水平，绝对算不上四星水平，早餐走了两圈也没有可以吃的，太差",
       "已经贴完了，又给小区的妈妈买了一套，值得推荐",
       "屏幕大，本子薄。自带数字小键盘，比较少见，声音很好，usb接口也很多，性价比高",
       "酒店环境很好，就是有一点偏僻，交通不是很好，不太好打车，酒店应该想办法解决一下"]
'''
# 批量编码句子
'''
out=token.batch_encode_plus(
    batch_text_or_text_pairs=[sents[0],sents[1]],
    add_special_tokens=True,
    truncation=True, # 句子过长截断
    padding="max_length", # 一律补零到max_length长度
    max_length=30,
    return_tensors=None, # 默认返回list
    return_attention_mask=True, # 返回 attention_mask
    return_token_type_ids=False,
    return_special_tokens_mask=True, #特殊符号标识
    return_length=True, # 返回length，标识长度
    )
print(out)
'''
# 获取字典
# vocab=token.get_vocab()
# print(vocab)
# print("阳" in vocab)
# 添加新词
token.add_tokens(new_tokens=["阳光","大志"])
# 重新获取字典
vocab=token.get_vocab()
print("大志" in vocab)
# 添加新的特殊符号 本质键值对
# token.add_special_tokens({"eos_token":"[EOS]"})
# 编码新句子
res=token.encode(
    text="阳光照在大地上[EOS]",
    text_pair=None,
    truncation=True,
    padding="longest",
    longest=10,
    add_special_tokens=True,
    return_tensors=None
    )
print(res)
# 解码为源字符串
print(token.decode(res))